- ZnVuY3Rpb24gdmVyaWZ5TG9naW4oa2V5KSB7CiAgICBsZXQgY250ID0gMDsKICAgIGxldCBjb29raWUgPSAnJzsKICAgIGxldCBjb250ZW50ID0gJyc7CiAgICBsZXQgeXptX3VybCA9ICdodHRwczovL3d3dy5jcGxkcS5jb20vaW5jbHVkZS92ZGltZ2NrLnBocCc7CiAgICBsb2coYOmqjOivgeeggemTvuaOpToke3l6bV91cmx9YCk7CiAgICBsZXQgc3VibWl0X3VybCA9ICdodHRwczovL3d3dy5jcGxkcS5jb20vc2VhcmNoLnBocD9zY2hlY2tBQz1jaGVjayZwYWdlPTEmc2VhcmNodHlwZT0mb3JkZXI9JnRpZD0mYXJlYT0meWVhcj0mbGV0dGVyPSZ5dXlhbj0mc3RhdGU9Jm1vbmV5PSZ2ZXI9JmpxPSc7CiAgICBsb2coYHBvc3TnmbvlvZXpk77mjqU6JHtzdWJtaXRfdXJsfWApOwogICAgd2hpbGUgKGNudCA8IE9DUl9SRVRSWSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCB7Y29va2llLCBodG1sfSA9IHJlcUNvb2tpZSh5em1fdXJsICsgJz90PScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwge3RvQmFzZTY0OiB0cnVlfSk7CiAgICAgICAgICAgIGxldCBjb2RlID0gT2NyQXBpLmNsYXNzaWZpY2F0aW9uKGh0bWwpOwogICAgICAgICAgICBsZXQgY29kZTEgPSBldmFsKGNvZGUuc2xpY2UoMCwgLTEpKTsKICAgICAgICAgICAgbG9nKGDnrKwke2NudCArIDF95qyh6aqM6K+B56CB6K+G5Yir57uT5p6cOiR7Y29kZX0tPiR7Y29kZTF9YCk7CiAgICAgICAgICAgIGh0bWwgPSBwb3N0KHN1Ym1pdF91cmwsIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtDb29raWU6IGNvb2tpZX0sCiAgICAgICAgICAgICAgICBib2R5OiAndmFsaWRhdGU9JyArIGNvZGUxICsgJyZzZWFyY2h3b3JkPScgKyBrZXksCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAoL+ebuOWFs+aQnOe0oue7k+aenC8udGVzdChodG1sKSkgewogICAgICAgICAgICAgICAgY29udGVudCA9IGh0bWw7CiAgICAgICAgICAgICAgICByZXR1cm4ge2Nvb2tpZSwgaHRtbDogY29udGVudH0gLy8g6ZyA6KaB6L+U5ZueY29va2llCiAgICAgICAgICAgIH0gZWxzZSBpZiAoIS/nm7jlhbPmkJzntKLnu5PmnpwvLnRlc3QoaHRtbCkgJiYgY250ICsgMSA+PSBPQ1JfUkVUUlkpIHsKICAgICAgICAgICAgICAgIGNvb2tpZSA9ICcnOyAvLyDpnIDopoHmuIXnqbrov5Tlm55jb29raWUKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbG9nKGDnrKwke2NudCArIDF95qyh6aqM6K+B56CB5o+Q5Lqk5aSx6LSlOiR7ZS5tZXNzYWdlfWApOwogICAgICAgICAgICBpZiAoY250ICsgMSA+PSBPQ1JfUkVUUlkpIHsKICAgICAgICAgICAgICAgIGNvb2tpZSA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNudCArPSAxCiAgICB9CiAgICByZXR1cm4ge2Nvb2tpZSwgaHRtbDogY29udGVudH0KfQoKZ2xvYmFsVGhpcy52ZXJpZnlMb2dpbiA9IHZlcmlmeUxvZ2luOwoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+S4gOi1t+eci1vkvJhdJywKICAgIGhvc3Q6ICdodHRwOi8vd3d3LmNwbGRxLmNvbScsCiAgICB1cmw6ICcvY3B0eXBlL2Z5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5waHA/cGFnZT1meXBhZ2Umc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPScsCiAgICBzZWFyY2hhYmxlOiAwLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAnJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX3BhcnNlOiAnLnNiX2xvZ2luX2FsZXJ0X2JveCYmbGk7YSYmVGV4dDthJiZocmVmOy8oXFxkKylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0ge3BhcnNlOiAxLCB1cmw6IGlucHV0LCBqczogJyd9OwogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICDmjqjojZA6ICcubWFpbiYmLmJndGUxMTMwO3VsJiYuc2ItZmlsbS1vbmU7KjsqOyo7KicsCiAgICDkuIDnuqc6ICcuc2ItYXJlYS1pbmRleCYmdWwmJi5xY29udGFpbmVyO2kmJlRleHQ7LmxhenkmJmRhdGEtb3JpZ2luYWw7Lm90aGVyJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcubmFtZSYmVGV4dDsuY3QmJmRkJiZUZXh0JywKICAgICAgICBpbWc6ICcubGF6eSYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5jdCYmZGQ6ZXEoMSkmJlRleHQ7LmN0JiZkZDplcSgyKSYmVGV4dDsuY3QmJmR0OmVxKDIpJiZUZXh0Oy5jdCYmZHQmJlRleHQ7JywKICAgICAgICBjb250ZW50OiAnZGl2LmVlJiZUZXh0JywKICAgICAgICB0YWJzOiAnLnBsYXlmcm9tJiZsaScsCiAgICAgICAgbGlzdHM6ICcucGxheWxpc3Q6ZXEoI2lkKSYmdWwmJmxpOm5vdCg6Y29udGFpbnMo5ruI5YeKKSknLAogICAgICAgIHRhYl90ZXh0OiAnYm9keS0tc3VwJiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnCiAgICB9LAogICAgLy/mkJzntKI6ICcqJywKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgY29va2llID0gZ2V0SXRlbShSVUxFX0NLLCAnJykgKyAnO3NzZWEyX3NlYXJjaD1vayc7CiAgICAgICAgbG9nKCflgqjlrZjnmoRjb29raWU6JyArIGNvb2tpZSk7CiAgICAgICAgbGV0IHJldCA9IHJlcXVlc3QoTVlfVVJMLCB7CiAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgIENvb2tpZTogY29va2llLAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKC/ns7vnu5/lronlhajpqozor4EvLnRlc3QocmV0KSkgewogICAgICAgICAgICBsZXQgbG9naW4gPSB2ZXJpZnlMb2dpbihLRVkpOwogICAgICAgICAgICBjb29raWUgPSBsb2dpbi5jb29raWU7CiAgICAgICAgICAgIGlmIChjb29raWUpIHsKICAgICAgICAgICAgICAgIGxvZyhg5pys5qyh5oiQ5Yqf6L+H6aqM6K+BLGNvb2tpZToke2Nvb2tpZX1gKTsKICAgICAgICAgICAgICAgIHNldEl0ZW0oUlVMRV9DSywgY29va2llKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxvZyhg5pys5qyh6Ieq5Yqo6L+H5pCc57Si6aqM6K+B5aSx6LSlLGNvb2tpZToke2Nvb2tpZX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXQgPSBsb2dpbi5odG1sOwogICAgICAgICAgICAvLyByZXQgPSByZXF1ZXN0KE1ZX1VSTCwgewogICAgICAgICAgICAvLyAgICAgaGVhZGVyczogewogICAgICAgICAgICAvLyAgICAgICAgIENvb2tpZTogY29va2llLAogICAgICAgICAgICAvLyAgICAgfQogICAgICAgICAgICAvLyB9KTsKICAgICAgICB9CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgcCA9IHJ1bGUu5LiA57qnLnNwbGl0KCc7Jyk7CiAgICAgICAgbGV0IGFyciA9IHBkZmEocmV0LCBwWzBdKTsKICAgICAgICBhcnIuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgcFsxXSksCiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwZGZoKGl0LCBwWzJdKSwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsIHBbM10pLAoKICAgICAgICAgICAgICAgIHVybDogcGRmaChpdCwgcFs0XSksCiAgICAgICAgICAgICAgICBjb250ZW50OiAnJywKICAgICAgICAgICAgfSk7CgogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9
|